package com.fowo.api.model.purchase.change.order.product;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fowo.api.common.validator.*;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/**
 * 变更单子表 预览导入辅助模型(全字段为文本类型)
 * @author yl_ls
 */
@Getter
@Setter
public class PurchaseChangeOrderProductImportPo {

  /** 业务标识 */
  @ExcelProperty("业务标识")
  @EnumsString(value = { "已变更" }, message = "业务标识只能是“已变更”中的一个")
  private String businessIdent;

  /** 品名 */
  @ExcelProperty("品名")
  @Size(max = 500, message = "品名长度不能超过500")
  private String productIdName;

  @ExcelIgnore
  @Schema(title = "品名")
  private String productId;

  /** SKU */
  @ExcelProperty("SKU")
  @Size(max = 50, message = "SKU长度不能超过50")
  private String sku;

  /** SPU */
  @ExcelProperty("SPU")
  private String spu;

  /** 店铺 */
  @ExcelProperty("店铺")
  @Size(max = 50, message = "店铺长度不能超过50")
  private String sidShopName;

  @ExcelIgnore
  @Schema(title = "店铺")
  private String sid;

  /** MSKU */
  @ExcelProperty("MSKU")
  @Size(max = 50, message = "MSKU长度不能超过50")
  private String msku;

  /** FNSKU */
  @ExcelProperty("FNSKU")
  @Size(max = 50, message = "FNSKU长度不能超过50")
  private String fnskuFnsku;

  @ExcelIgnore
  @Schema(title = "FNSKU")
  private String fnsku;

  /** 原采购数量 */
  @ExcelProperty("原采购数量")
  @LongString(message = "原采购数量数值格式不正确", label = "原采购数量")
  private String originalApplicationNum;

  /** 采购量 */
  @ExcelProperty("采购量")
  @IntegerString(message = "采购量数值格式不正确", label = "采购量")
  private String applicationNum;

  /** 原单价 */
  @ExcelProperty("原单价")
  @DecimalString(message = "原单价小数格式不正确", label = "原单价")
  private String originalUnitPrice;

  /** 单价 */
  @ExcelProperty("单价")
  @DecimalString(message = "单价小数格式不正确", label = "单价")
  private String unitPrice;

  /** 成本价格 */
  @ExcelProperty("成本价格")
  @DecimalString(message = "成本价格小数格式不正确", label = "成本价格")
  private String costPrice;

  /** 主材料单价 */
  @ExcelProperty("主材料单价")
  @DecimalString(message = "主材料单价小数格式不正确", label = "主材料单价")
  private String mainUnitPrice;

  /** 主材料克重 */
  @ExcelProperty("主材料克重")
  @DecimalString(message = "主材料克重小数格式不正确", label = "主材料克重")
  private String gramWeight;

  /** 工费 */
  @ExcelProperty("工费")
  @DecimalString(message = "工费小数格式不正确", label = "工费")
  private String laborCosts;

  /** 辅料 */
  @ExcelProperty("辅料")
  @DecimalString(message = "辅料小数格式不正确", label = "辅料")
  private String accessoriesPrice;

  /** 损耗% */
  @ExcelProperty("损耗%")
  @DecimalString(message = "损耗%小数格式不正确", label = "损耗%")
  private String materialloss;

  /** 包装 */
  @ExcelProperty("包装")
  @DecimalString(message = "包装小数格式不正确", label = "包装")
  private String materialpack;

  /** ERP价格 */
  @ExcelProperty("ERP价格")
  @DecimalString(message = "ERP价格小数格式不正确", label = "ERP价格")
  private String erpprice;

  /** 含税单价 */
  @ExcelProperty("含税单价")
  @DecimalString(
    message = "含税单价小数格式不正确",
    label = "含税单价",
    min = 0
  )
  private String taxPrice;

  /** 原金额 */
  @ExcelProperty("原金额")
  @DecimalString(message = "原金额小数格式不正确", label = "原金额")
  private String originalTotalPrice;

  /** 金额 */
  @ExcelProperty("金额")
  @DecimalString(message = "金额小数格式不正确", label = "金额")
  private String totalPrice;

  /** 价税合计 */
  @ExcelProperty("价税合计")
  @DecimalString(message = "价税合计小数格式不正确", label = "价税合计")
  private String priceAmount;

  /** 预计到货日期 */
  @ExcelProperty("预计到货日期")
  @DateString(message = "预计到货日期不是有效的日期格式")
  private String expectArriveTime;

  /** 所属变更单 */
  @ExcelProperty("所属变更单")
  @Size(max = 50, message = "所属变更单长度不能超过50")
  private String parentPurchaseChangeOrderOrderSn;

  @ExcelIgnore
  @Schema(title = "所属变更单")
  private String parentPurchaseChangeOrder;

  /** 型号 */
  @ExcelProperty("型号")
  @Size(max = 50, message = "型号长度不能超过50")
  private String model;

  /** 供应商报价 */
  @ExcelProperty("供应商报价")
  @DecimalString(message = "供应商报价小数格式不正确", label = "供应商报价")
  private String supplierQuote;

  /** 到货量 */
  @ExcelProperty("到货量")
  @IntegerString(message = "到货量数值格式不正确", label = "到货量")
  private String quantityReceived;

  /** 退货量 */
  @ExcelProperty("退货量")
  @IntegerString(message = "退货量数值格式不正确", label = "退货量", min = 0)
  private String quantityReturn;

  /** 参考价 */
  @ExcelProperty("参考价")
  @DecimalString(message = "参考价小数格式不正确", label = "参考价")
  private String referencePrice;

  /** 更新报价 */
  @ExcelProperty("更新报价")
  @EnumsString(
    value = { "否", "是" },
    message = "更新报价只能是“否”, “是”中的一个"
  )
  private String updateQuo;

  /** 税率 */
  @ExcelProperty("税率")
  @DecimalString(message = "税率小数格式不正确", label = "税率")
  private String taxRate;

  /** 税额 */
  @ExcelProperty("税额")
  @DecimalString(message = "税额小数格式不正确", label = "税额")
  private String taxAmount;

  /** 备注 */
  @ExcelProperty("备注")
  @Size(max = 200, message = "备注长度不能超过200")
  private String remark;

  /** 单箱数量 */
  @ExcelProperty("单箱数量")
  @IntegerString(message = "单箱数量数值格式不正确", label = "单箱数量")
  private String quantityPerCase;

  /** 箱数 */
  @ExcelProperty("箱数")
  @IntegerString(message = "箱数数值格式不正确", label = "箱数")
  private String casesNum;

  /** 采购订单子表id */
  @ExcelProperty("采购订单子表id")
  @LongString(
    message = "采购订单子表id数值格式不正确",
    label = "采购订单子表id",
    min = 0L
  )
  private String purchaseOrderProductId;
}
